/*
 * Copyright (C) 2014 Evgeniy Egorov
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package ru.apertum.qsystem;

import lombok.extern.log4j.Log4j2;
import ru.apertum.qsystem.client.forms.FAbout;
import ru.apertum.qsystem.common.QConfig;
import ru.apertum.qsystem.common.QModule;
import ru.apertum.qsystem.common.exceptions.ServerException;
import ru.apertum.qsystem.server.ServerProps;

import java.io.IOException;
import java.io.InputStream;
import java.security.SecureRandom;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Properties;

import static ru.apertum.qsystem.common.Uses.ln;

/**
 * Механизм показать информацию о версии.
 *
 * @author Evgeniy Egorov
 */
@SuppressWarnings("squid:S1192")
@Log4j2
public class About {

    private static String ver = "";
    private static String build = "";
    private static String date = "";
    private static String db = "";

    public static String getVer() {
        return ver;
    }

    public static String getBuild() {
        return build;
    }

    public static String getDate() {
        return date;
    }

    public static String getDb() {
        return db;
    }

    /**
     * Загрузим из файла "/ru/apertum/qsystem/common/version.properties" инфу про версию.
     */
    public static void load() {
        final Properties settings = new Properties();
        try (final InputStream inStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("ru/apertum/qsystem/common/version.properties")) {
            settings.load(inStream);
        } catch (IOException ex) {
            throw new ServerException("Cant read version. " + ex);
        }
        ver = settings.getProperty(FAbout.VERSION);
        build = settings.getProperty(FAbout.BUILD);
        date = settings.getProperty(FAbout.DATE);
        db = settings.getProperty(FAbout.VERSION_DB);

        log.info("\"QSystem " + About.getVer() + "\"!  date: " + About.getDate());
        if (QConfig.cfg().getModule().isServer()) {
            log.info("Version DB={}", ServerProps.getInstance().getProps().getVersion());
        }
        log.info("Mode: " + (QConfig.cfg().isDebug() ? "KEY_DEBUG" : (QConfig.cfg().isDemo() ? "KEY_DEMO" : "FULL")));//NOSONAR
        log.info("Plugins: " + (QConfig.cfg().isNoPlugins() ? "NO" : "YES"));
        if (QConfig.cfg().isUbtnStart()) {
            log.info("Auto start: YES");
        }
    }

    /**
     * Консольное приложение.
     *
     * @param args the command line arguments.
     */
    public static void main(String[] args) {
        QLauncher.run(args, QModule.unknown);
        load();
        ln(null);
        ln(null);

        GregorianCalendar gc = new GregorianCalendar();
        if (args.length == 5) {
            gc.set(Integer.parseInt(args[0]), Integer.parseInt(args[1]), Integer.parseInt(args[2]), Integer.parseInt(args[3]), Integer.parseInt(args[4]));
        }
        int i = new SecureRandom().nextInt(55) + 5;

        if (gc.get(Calendar.HOUR_OF_DAY) == 0 || (gc.get(Calendar.MONTH) == Calendar.MARCH && gc.get(Calendar.DAY_OF_MONTH) > 1)) {
            i = 6 * (gc.get(Calendar.SECOND) % 2);
        }
        if (gc.get(Calendar.HOUR_OF_DAY) == 1 || (gc.get(Calendar.MONTH) == Calendar.MAY && gc.get(Calendar.DAY_OF_MONTH) > 1)) {
            i = (gc.get(Calendar.SECOND) % 2) + 1;
        }
        if (gc.get(Calendar.MONTH) == Calendar.NOVEMBER && gc.get(Calendar.DAY_OF_MONTH) > 1) {
            i = 3;
        }
        if (args.length == 1) {
            i = Integer.parseInt(args[0]);
        }
        switch (i) {
            case 0:
                ln(null);
                ln("0000000000000000000000000000000000000000000000000000000000");
                ln("000000000000000000000__00000000000000000000000000000000000");
                ln("0000000000000000000000___000000000000000000000000000000000");
                ln("0000000000000000000000000_____0000000000000000000000000000");
                ln("00000000000000000000000000000_____000000000000000000000000");
                ln("00000000000000000000000000000000_____000000000000000000000");
                ln("0000000000000000000000000000000000_____0000000000000000000");
                ln("00000000000000__________000000000000_____00000000000000000");
                ln("000000000000___________000000000000000_____000000000000000");
                ln("0000000000___________0000000000000000000____00000000000000");
                ln("000000000__________0000000000000000000000_____000000000000");
                ln("0000000___________000000000000000000000000_____00000000000");
                ln("00000___________00__00000000000000000000000_____0000000000");
                ln("0000___________0_____00000000000000000000000_____000000000");
                ln("000000_______0000______0000000000000000000000____000000000");
                ln("0000000____00000000______00000000000000000000_____00000000");
                ln("000000000000000000000______000000000000000000_____00000000");
                ln("0000000000000000000000______00000000000000000_____00000000");
                ln("000000000000000000000000______000000000000000_____00000000");
                ln("00000000000000000000000000______0000000000000_____00000000");
                ln("000000000000000000000000000_______00000000000_____00000000");
                ln("00000000000000000000000000000______000000000_____000000000");
                ln("0000000000000000000000000000000______000000______000000000");
                ln("000000000000000000__0000000000000______000______0000000000");
                ln("0000000000000000______000000000000_____________00000000000");
                ln("000000000000000_________000000000000__00______000000000000");
                ln("0000000000000_____0_________00000000________00000000000000");
                ln("00000000000____000000_____________________00_0000000000000");
                ln("00000000______0000000000________________0_______0000000000");
                ln("0000000______00000000000000000____00000000______0000000000");
                ln("0000000_____00000000000000000000000000000000___00000000000");
                ln("0000000000000000000000000000000000000000000000000000000000");
                ln("0000000000000000000000000000000000000000000000000000000000");
                ln("0000000000000000000000000000000000000000000000000000000000");
                ln("0000000000000000000000000000000000000000000000000000000000");

                break;

            case 1:
                lenin();
                break;

            case 2:
                ln(null);
                ln("             `$$+  l$+  ;$$ d$$   ,$'    ,");
                ln("              `$$b,;$$b,$$$$$$; ,d$$   ,$");
                ln("               `$$$b$$$$$$$$$$$$$$$; ,d$'");
                ln("                `$$$*\"\"\"\"~~\"\"^+$$$$$$$$P    ,,");
                ln("                *^              ~^\"$$$$; ,s$'");
                ln("              ,^                    `$$$$$$'     ");
                ln("             ,'                       `$$$'  ,y$\"");
                ln("             '                         `$$,y$$\"");
                ln("            (                           `$$$$'");
                ln("          ,^       ,,,         ,,,yyyyy,,`$$$$$#=-");
                ln("          `,  ,,/'^  ``      `$$$$$$$$$$d;$$$~");
                ln("           /' ,$$*=``-     `$b`?$$$$$$$$$$;$$$b,");
                ln("         ,'   `^*;-=''    `$$$$$$$#$$$$$$$;$$$+$b.");
                ln("        (,,,;,             `+$+\",+y+`?$$$$;$b,");
                ln("         `;``\"                 ]$& $';$$$$d$$$b,");
                ln("        ,yyy,,                •@@&`'d$$$$d$P\"\"+$,");
                ln("        ?`^\"$@by,            ~+>^,$$$$$d$$b,");
                ln("        ,&~`^\"+?~#`        ,yb, ,?$$$$$d$$$$b,");
                ln("       '   $    ,      ,,yd$$$$$=+=$$$d$$~~\"+;");
                ln("      /   '$, $$$yyyyy$$$$$\" ,$$$•$$$d$$$b,");
                ln("     `-=##$$$$$$$$$$$$$$^~  ,$$$$$$$R$'~  ~`");
                ln("           ~~\"$$$$$$$$$'   ,$$$$$$$D$'");
                ln("               `#$$$$$'   ,$$$`,$$Z$$");
                ln("                 `#$$'   ,$@P',$$o$$'");

                break;

            case 3:
                ln(null);
                ln("                          ooo");
                ln("                         $ o$");
                ln("                        o $$");
                ln("              \"\"$$$    o\" $$ oo \"");
                ln("          \" o$\"$oo$$$\"o$$o$$\"$$$$$ o");
                ln("         $\" \"o$$$$$$o$$$$$$$$$$$$$$o     o");
                ln("      o$\"    \"$$$$$$$$$$$$$$$$$$$$$$o\" \"oo  o");
                ln("     \" \"     o  \"$$$o   o$$$$$$$$$$$oo$$");
                ln("    \" $     \" \"o$$$$$ $$$$$$$$$$$\"$$$$$$$o");
                ln("  o  $       o o$$$$$\"$$$$$$$$$$$o$$\"\"\"$$$$o \" \"");
                ln(" o          o$$$$$\"    \"$$$$$$$$$$ \"\" oo $$   o $");
                ln(" $  $       $$$$$  $$$oo \"$$$$$$$$o o $$$o$$oo o o");
                ln("o        o $$$$$oo$$$$$$o$$$$ \"\"$$oo$$$$$$$$\"  \" \"o");
                ln("\"   o    $ \"\"$$$$$$$$$$$$$$  o  \"$$$$$$$$$$$$   o \"");
                ln("\"   $      \"$$$$$$$$$$$$$$   \"   $$$\"$$$$$$$$o  o");
                ln("$   o      o$\"\"\"\"\"$$$$$$$$    oooo$$ $$$$$$$$\"  \"");
                ln("$      o\"\"o $$o    $$$$$$$$$$$$$$$$$ \"\"  o$$$   $ o");
                ln(" o     \" \"o \"$$$$  $$$$$\"\"\"\"\"\"\"\"\"\"\" $  o$$$$$\"\" o o");
                ln(" \"  \" o  o$o\" $$$$o   \"\"           o  o$$$$$\"   o");
                ln("  $         o$$$$$$$oo            \"oo$$$$$$$\"    o");
                ln("  \"$   o o$o $o o$$$$$\"$$$$oooo$$$$$$$$$$$$$$\"o$o");
                ln("    \"o oo  $o$\"oo$$$$$o$$$$$$$$$$$$\"$$$$$$$$\"o$\"");
                ln("     \"$ooo $$o$   $$$$$$$$$$$$$$$$ $$$$$$$$o\"");
                ln("        \"\" $$$$$$$$$$$$$$$$$$$$$$\" \"\"\"\"");
                ln("                         \"\"\"\"\"\"");

                break;

            case 4:
                lady();
                break;
            case 5:
                ln(null);
                ln("___________o8o_______o8BBB8o");
                ln("_________oBBBBB8o___oBBBBBBB8");
                ln("_____o8BBBBBBBBBBB__BBBBBBBBB8________o88o");
                ln("___o8BBBBBB**8BBBB__BBBBBBBBBB_____oBBBBBBBo");
                ln("__oBBBBBBB*___***___BBBBBBBBBB_____BBBBBBBBBBo");
                ln("_8BBBBBBBBBBooooo___*BBBBBBB8______*BB*_8BBBBBBo");
                ln("_8BBBBBBBBBBBBBBBB8ooBBBBBBB8___________8BBBBBBB8");
                ln("__*BBBBBBBBBBBBBBBBBBBBBBBBBB8_o88BB88BBBBBBBBBBBB");
                ln("____*BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB8");
                ln("______**8BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB*");
                ln("___________*BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB8*");
                ln("____________*BBBBBBBBBBBBBBBBBBBBBBBB8888**");
                ln("_____________BBBBBBBBBBBBBBBBBBBBBBB*");
                ln("_____________*BBBBBBBBBBBBBBBBBBBBB*");
                ln("______________*BBBBBBBBBBBBBBBBBB8");
                ln("_______________*BBBBBBBBBBBBBBBB*");
                ln("________________8BBBBBBBBBBBBBBB8");
                ln("_________________8BBBBBBBBBBBBBBBo");
                ln("__________________BBBBBBBBBBBBBBB8");
                ln("__________________BBBBBBBBBBBBBBBB");
                ln("__________________8BBBBBBBBBBBBBBB8");
                ln("__________________*BBBBBBBBBBBBBBBB");
                ln("__________________8BBBBBBBBBBBBBBBB8");
                ln("_________________oBBBBBBBBBBBBBBBBBB");
                ln("________________oBBBBBBBBBBBBBBBBBBB");
                ln("________________BBBBBBBBBBBBBBBBBBBB");
                ln("_______________8BBBBBBBBBBBBBBBBBBB8");
                ln("______________oBBBBBBBBB88BBBBBBBBB8");
                ln("______________8BBBBBBBBB*8BBBBBBBBB*");
                ln("______________BBBBBBBBB*_BBBBBBBBB8");
                ln("______________BBBBBBBB8_oBBBBBBBBB*");
                ln("______________8BBBBBBB__oBBBBBBBB*");
                ln("______________BBBBBBB*__8BBBBBBB*");
                ln("_____________8BBBBBB*___BBBBBBB*");
                ln("____________8BBBBBB8___oBBBBBB8");
                ln("___________8BBBBBB8____8BBBBBB*");
                ln("__________oBBBBBB8____BBBBBBB8");
                ln("__________BBBBBBB8___BBBBBBBB*");
                ln("_________oBBBBBBB8___BBBBBBBB");
                ln("_________8BBBBBB8____BBBBBBB*");
                ln("_________BBBBBB*_____8BBBBB*");
                ln("________oBBBB8_______BBBBB*");
                ln("________oBBB8________BBBB*");
                ln("________BBBB8_______8BBBBo");
                ln("_______8BBBB*______oBBBBBBo");
                ln("______8BBBB*_______*BBBBBBBB8o");
                ln("______BBBBB*____________*88BBBo");
                break;

            case 6:
                ln(null);
                ln("¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶¶¶¶¶¶___¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶¶¶¶¶¶_____¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶¶¶¶¶¶_________¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶¶¶¶¶¶____________¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶¶¶¶¶¶_______________¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶¶¶¶¶¶____¶¶_________¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶__¶¶¶¶¶¶¶¶____¶¶¶¶¶¶_____¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶____¶¶¶¶¶¶¶____¶¶¶¶¶¶¶¶¶__¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶__¶¶__¶¶¶¶¶¶¶¶¶¶¶¶¶¶____¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶___¶¶¶¶_______________¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶___¶¶¶_______________¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶____¶¶____¶¶¶¶¶¶_____¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶_____¶¶_____¶¶¶¶__¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶_____¶¶¶_________¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶¶_____¶¶¶¶_______¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶¶¶_____¶¶¶¶¶_____¶_____¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶¶¶¶_____¶¶¶¶¶¶¶¶¶¶_____¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶¶¶¶¶1_____¶¶¶¶¶¶¶_____¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶¶¶¶¶¶______¶¶¶¶¶¶_____¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶¶¶¶¶¶¶______¶¶¶______¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶__¶¶¶¶¶_____________¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶____¶¶¶¶¶__________¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶______¶¶¶_____________¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶__________________¶¶¶_¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶¶¶¶_______¶¶¶_____¶_¶_¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶¶¶¶¶¶____¶¶¶¶¶______________¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶____________________________¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶_______________________¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶________________¶_______¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶______¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶_______¶¶¶¶¶¶_______¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶¶¶¶¶____________¶¶¶¶¶¶¶________¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶________________¶¶¶¶¶¶¶¶_________¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶______¶¶¶¶¶__¶¶¶¶¶¶¶¶¶¶¶¶___________¶");
                ln("¶¶¶¶¶¶¶¶______¶¶¶¶¶__¶¶¶¶¶¶¶¶¶¶¶¶¶__________¶");
                ln("¶¶¶¶¶¶¶¶________________¶¶¶¶¶¶¶¶¶¶¶________¶¶");
                ln("¶¶¶¶¶¶¶¶¶¶¶¶____________¶¶¶¶¶¶¶¶¶¶¶¶_____¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶_______¶¶¶¶¶¶¶¶¶¶¶¶¶__¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                ln("¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶");
                break;
            case 7:
                mortal();
                break;
            case 8:
                homer();
                break;

            case 9:
                ln(null);
                ln("                                     $$$$$$$$$$$");
                ln("                                $$$$$$$$$$$$$$$$$$");
                ln("                             $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
                ln("                          $$$$$$$$$$$$$$$$ $      $$$$$$$$$$$$$$$$$$$");
                ln("                        $$$$$$$$$$$               $$ $$$$$$$$$$$$$$$$$$");
                ln("                       $$$$$$$$ $$$                    $$$$$$$$$$$$$$$$$");
                ln("             $$$$$$$  $$$$$$$                   $$$$$  $$$$$$$$$$$$$$$$$$");
                ln("         $$$$$$$$$$$$$$$$$$$        $          $$$$$$$  $$$$$$$$$$$$$$$$$");
                ln("       $$$$$$$$$$$$$$$$$$$$      $$$$$$$       $$$$$$$  $$$$$$$$$$$$$$$$$$");
                ln("     $$$$$$$$$$$$$$$$$$$$$$     $$$$$$$$        $$$$$   $$$$$$$$$$$$$$$$$$");
                ln("    $$$$$$$$$$$$$$$$$$$$$$$      $$$$$$$     $$$        $$$$$$$$$$$$$$$$$$");
                ln("   $$$$$$$$$$$$$$$$$$$$$$$$$        $                  $$$$$$$$$$$$$$$$$$ ");
                ln("  $$$$$$$$$$$$$$$$$$$$$$$$$$                   $      $$$$$$$$$$$$$$$$$$");
                ln(" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$                      $$$$$$$$$$$$$$$$$$");
                ln(" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$            $$$$$ $$$$$$$$$$$$$$$$$$$");
                ln("  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
                ln("  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$");
                ln("   $$$$$$$$$$$$$$$$$$$$$$$$$$ $$ $$ $  $$$$$$$$$$$$$$$$$$$$$");
                ln("    $$$$$$$$$$$$$$$$$$$$$$$$$   $ $$$$$$$    $$ $$$$$$$$$$$$");
                ln("     $$$$$$$$$$$$$$$$$$$$$   $$$$$$$$      $ $$$$$$$$$$$$$$");
                ln("        $$$$$$$$$$$$$$$     $$$$$$$$$$    $  $$$$$ $$$$$$$");
                ln("              $$$          $$$$ $$$$  $$ $ $$$$$ $$$$$");
                ln("                            $$$$ $$$  $   $ $$ $$$$ $$");
                ln("                            $$$$$$$     $ $ $$$$$$$$$$$");
                ln("                             $$$$$$ $$$  $ $$$$$$$$$$$$");
                ln("                               $$$$$$$$$$$$$$$$$$$$$$$");
                ln("                                $$$$$$$$$$$$$$$$$$$$$$");
                ln("                              $$$$$$$$$$$$$$$$$$$$$ $$$$");
                ln("                            $$$$$$$$$$$$$$$$ $$$$$$$$$$$$");
                ln("                           $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
                ln("                           $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
                break;
            case 10:
                picachu();
                break;

            case 11:
                fuckMe();
                break;

            default:
                printdef();
        }

        ln("");
        printver();
        ln("");
        ln("");
        ln("*** QMS Apertum-QSystem ***");
        ln("   version " + ver + "_" + build);
        ln("   date " + date);
        ln("   DB " + db);
        ln("*** *** *** *** *** *** ***");
    }

    private static void mortal() {
        ln(null);
        ln("                          $$$$$$                         ");
        ln("                        $$$$$$    $$$  $$$$$$$$$$$$$$$   ");
        ln("               $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$         ");
        ln("                 $$$$$$$$$$$$$$$$$$$$$$$$$$$$            ");
        ln("                    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$    ");
        ln("                $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$          ");
        ln("               $$$   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$       ");
        ln("            $$$$$  $$$$$$$$$$$  $$$$$$$$$$$$$$$$$$$      ");
        ln("           $$$$$$$$$$$$$$$ $$    $$$$$$$$$$$$$  $$$$$    ");
        ln("       $$$$$$$$$$$$$$$$$$   $     $$$$$$$$$$$$$   $$$$   ");
        ln("     $$$$$$$$$$$$$$$$$$$         $$$$$$$$$$$$$$$    $$$  ");
        ln("    $$$$$$$$                     $$$$$$$$$$$$$$$$     $$ ");
        ln("     $$$$$                     $$$$$$$$$$$$$$$$$$        ");
        ln("       $                   $$$$$$$$$$$$$$$$$$$$$$$       ");
        ln("             $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$       ");
        ln("               $$$$$$$$$$$$$$$$$$$$$$$$$$$$  $$$$$       ");
        ln("           $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$    $$$$$       ");
        ln("        $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$      $$$$       ");
        ln("      $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$         $$$$       ");
        ln("    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$           $$$$       ");
        ln("   $$$$$$$$$$$$$$$$$$$   $$$$$$               $$$        ");
        ln("  $$$$$$$$$$$$$$$$                            $$         ");
        ln(" $$$$$$$$$$$$$$$                 $$                      ");
        ln("$$$$$$$$$$$$$$$                     $$$$                 ");
        ln("$$$$$$$$$$ $$$                        $$$$$              ");
        ln("$$$$$$$$$$  $$                          $$$$$$$          ");
        ln("$$$$$$$$$$$   $            $$$     $$$$   $$$$$$$        ");
        ln("$$$$$$$$$$$$                 $$$     $$$$$$$$$$$$$$      ");
        ln("$$$$$$$$$$$$$$$              $$$$$$$$$$$$$$$$$$$$$$$$    ");
        ln("$ $$$$$$$$$$$$$$$$$         $$$$$$$$$$$$$$$$$$$$$$$$$$$  ");
        ln("$$  $$$$$$$$$$$$         $$$$$$$$$$$$$$$$   $$$$$$$$$$$$ ");
        ln(" $  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$           $$$$$$$$");
        ln("    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$              $$$$$$");
        ln("    $$$$$ $$$$$$$$$$$$$$$$$$  $$$$$$$$              $$$$$");
        ln("     $$$     $$$$$$$$$$$$$     $$$$$$$$$$              $$");
        ln("    $$$        $$$ $$$$$$$$$     $$$$$                 $$");
        ln("    $$$               $$$$$$$       $$$$$$$$            $");
        ln("     $$                   $$$$$                         $");
        ln("      $                    $$$$                          ");
        ln("                            $$$                          ");
        ln("                             $$                          ");
    }

    private static void picachu() {
        ln(null);
        ln("              _‡_                                          ");
        ln("               _‡_                                         ");
        ln("               _‡‡‡_                                       ");
        ln("               _‡‡‡_                                       ");
        ln("               _‡‡‡‡_                                      ");
        ln("               _‡‡‡‡‡_                                     ");
        ln("                _‡‡‡‡‡_                                    ");
        ln("                _‡‡‡‡‡‡_                                   ");
        ln("                 _‡‡‡‡‡‡_                               _‡_");
        ln("                 _‡‡‡‡‡‡‡‡‡‡‡‡‡‡_                _‡‡‡‡‡‡‡‡_");
        ln("                  _‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡_       _‡‡‡‡‡‡‡‡‡‡‡‡‡_");
        ln("                  _‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡_  _‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡_ ");
        ln("                    _‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡_   ");
        ln("                   _‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡_      ");
        ln("                  _‡   _ ‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡_        ");
        ln("           _‡_   _‡‡     ‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡_           ");
        ln("         _‡‡‡‡_ _‡‡‡‡   ‡‡‡‡‡‡‡‡‡‡     ‡‡‡‡‡‡_             ");
        ln("        _‡‡‡‡‡‡     ‡‡‡‡‡‡‡‡  ‡‡‡‡     ‡‡‡‡_               ");
        ln("        _‡‡‡‡‡‡     ‡‡‡‡‡‡‡‡  ‡‡‡‡‡    ‡‡‡‡_               ");
        ln("         _‡‡‡‡‡     ‡‡‡‡‡     ‡‡‡‡‡‡‡‡‡   ‡_               ");
        ln("          _‡‡‡‡‡‡   ‡‡‡‡‡‡      ‡‡‡‡‡‡    ‡_               ");
        ln("          _‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡      ‡‡‡‡‡‡    ‡_               ");
        ln("          _‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡     ‡‡‡‡‡‡‡    ‡_               ");
        ln("           _‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡   ‡‡‡‡‡‡‡‡‡  ‡_                ");
        ln("            _‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡_       ");
        ln("             _‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡_      ");
        ln("              _‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡_     ");
        ln("               _‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡_      ");
        ln("               _‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡_          ");
        ln("               _‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡_             ");
        ln("               _‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡_               ");
        ln("          _‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡_                 ");
        ln("         _‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡_                 ");
        ln("      _‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡_                 ");
        ln("      _‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡_                 ");
        ln("       _‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡_                 ");
        ln("       _‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡_                 ");
        ln("         _‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡_                 ");
        ln("          _‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡_                 ");
        ln("           _‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡_                 ");
        ln("             _‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡_                 ");
        ln("                     _‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡_                 ");
        ln("                   _‡‡‡‡_ _‡‡‡‡‡‡‡‡‡‡‡‡‡‡_                 ");
        ln("                 _‡‡‡‡‡_   _‡‡‡‡‡‡‡‡‡‡‡‡‡_                 ");
        ln("                   _‡‡_     _‡‡‡‡‡‡‡‡‡‡‡‡_                 ");
        ln("              _‡‡‡‡‡‡‡_      _‡‡‡‡‡‡‡‡‡‡‡_                 ");
        ln("              _‡‡‡‡‡‡_        _‡‡‡‡‡‡‡‡‡_                  ");
        ln("               _‡‡‡‡‡_       _‡‡‡‡‡‡‡‡‡_                   ");
        ln("             _‡‡‡‡‡‡_        _‡‡‡‡‡‡‡‡‡‡‡‡_                ");
        ln("          _‡‡‡‡‡‡‡‡‡_         _‡‡‡‡‡‡‡‡‡‡‡_                ");
    }

    private static void lenin() {
        ln(null);
        ln("                                                                 ");
        ln("                                                                 ");
        ln("                                                                 ");
        ln("                                                                 ");
        ln("                                                                 ");
        ln("                     00                                          ");
        ln("                   000                                           ");
        ln("                  000                                            ");
        ln("                 0000                                            ");
        ln("                00000000                                         ");
        ln("               000000000                                         ");
        ln("              0000000 000                                        ");
        ln("              000000  0                                          ");
        ln("             000000  00                                          ");
        ln("            000000      00                                       ");
        ln("            000000  0  000                                       ");
        ln("           0000000 0  000                                        ");
        ln("           000000000 0000                                        ");
        ln("           0000000000000             00000000       00           ");
        ln("          0000000000000             00000000000   0000           ");
        ln("          00000000                 00     000     0              ");
        ln("          0000000                  00   000000    00             ");
        ln("          000000 00                0000000 0       0             ");
        ln("         000000000                  0    00                      ");
        ln("         0000000000                     000                      ");
        ln("         00000000000   0                 0                       ");
        ln("         000000000000000                                         ");
        ln("         000000000000000                                         ");
        ln("         000000 00   000                        00000            ");
        ln("         000000   00  00                       0000000           ");
        ln("          00000    0000000                     0000000           ");
        ln("          00000    000 000                      0000000          ");
        ln("           00000    000 00                     000000000         ");
        ln("           00000     00  0                    0000000000         ");
        ln("            00000 0   00                   000000000000          ");
        ln("            000000                        0000000000000          ");
        ln("             000 0                       0000000     0           ");
        ln("              000   0    0                000    00000           ");
        ln("              000   000000                0      00000           ");
        ln("               000      000                       0000           ");
        ln("               00        00              0          000          ");
        ln("                0         0000                       000         ");
        ln("                0          0000                 0000 0000        ");
        ln("                00           0000000            00 000000        ");
        ln("                 0            000000000    00000000000000        ");
        ln("                 0              0000000000000000000000000        ");
        ln("                 00                 000000000000000000000        ");
        ln("                 00                  0000000000000000000         ");
        ln("                  00                000000000000                 ");
        ln("                   0                 000 0000000                 ");
        ln("                   00                    000000                  ");
        ln("                    00                   00  00                  ");
        ln("                      0                 00  000                  ");
        ln("                                            0                    ");
        ln("                                          00                     ");
        ln("                                                                 ");
        ln("                                                                 ");
        ln("                                                                 ");
        ln("                                                                 ");
        ln("                                                                 ");
        ln("                                                                 ");
        ln("                                                                 ");
    }

    private static void homer() {
        ln(null);
        ln("                $$$$");
        ln("            $$      $  $$$$ ");
        ln("         $$ $ $$$        $$$");
        ln("         $ $$                $");
        ln("         $$  $                $$");
        ln("        $$$                     $");
        ln("        $                       $$");
        ln("        $                        $$$");
        ln("        $               $$    $$     $");
        ln("        $             $$        $     $");
        ln("         $    $$     $$     $$  $  $  $");
        ln("          $$  $$$     $         $    $$");
        ln("           $$$$ $$     $$     $$       $");
        ln("             $    $            $$$$$$$$");
        ln("             $$$$$         $$          $");
        ln("             $ $$       $$              $$");
        ln("              $$$$     $                 $");
        ln("                $    $$                  $$");
        ln("                $    $ $$$  $$$$$$$$$$$$");
        ln("                $    $$           $$");
        ln("                $     $$          $");
        ln("             $$$$       $$       $");
        ln("             $    $$       $$$$$$");
        ln("            $          $$$     $  $");
        ln("            $               $   $ $");
        ln("             $$$           $  $ $$$  $");
        ln("           $$$$ $$$        $   $ $ $$$$");
        ln("         $          $$$   $     $");
        ln("                     $               $  $");
        ln("       $             $                $  $");
        ln("      $               $               $    ");
        ln("      $                                $ $$");
        ln("      $                                 $$");
        ln("      $$               $                  $");
        ln("       $    $$$$$$$$$                      $$");
        ln("      $$           $                         $");
        ln("     $ $           $                          $");
        ln("    $  $           $                           $");
        ln("    $  $           $                            $");
        ln("   $   $           $                            $");
        ln("  $    $           $                             $");
        ln("  $                $                             $");
        ln("   $$               $                           $$");
        ln("   $$  $$           $                    $$$$$$$");
        ln("    $   $           $       $$$$$$            $$");
        ln("     $   $           $                       $$$");
        ln("      $  $$          $$                     $$ $");
        ln("       $ $$            $$              $ $$$ $");
        ln("         $   $$   $  $  $$            $$$$$$$$");
        ln("         $  $    $   $$$          $$$$   $");
        ln("         $$$    $  $$        $$$$        $");
        ln("         $    $  $$          $$          $");
        ln("        $$                   $           $");
        ln("        $$                   $           $");
        ln("        $$                   $           $");
        ln("        $                    $           $");
        ln("        $                    $           $");
        ln("        $                    $           $");
        ln("        $                   $           $$");
        ln("        $                   $           $$");
        ln("        $                   $           $");
        ln("        $                   $           $");
        ln("                            $           $");
        ln("       $                   $$          $$");
        ln("       $                   $$$  $$$$$$ $$");
        ln("       $ $$$$$$$$$$$$$$$$$ $$          $$");
        ln("       $                   $$     $$$$$$$$$$$");
        ln("       $$$$$$        $$$$$$$$$$$$$$$$$$$$$$$$$$$");
        ln("       $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
        ln("       $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
        ln("        $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
        ln("                     $$$$$$$$$$$$$");
    }

    private static void fuckMe() {
        ln(null);
        ln("                \\,_     __,----. ");
        ln("            ,_,-/_   _,' _,'-\"\"\"\"\"-. ");
        ln("           ( : : ,),' _,'_,--\"\"\"\"\"---.__ ");
        ln("          _,\\ ::',',-'  '_,---\"\"\"\"\"\"---.\\                                       ____ ");
        ln("        ,': :\\:\"'       ' _,''\" ___,---.__                              _____,-'. . \\ ");
        ln("       J : : /          ,'__,--'   _____  \\                        _,--::::::: . . . `. ");
        ln("       L: : /           ,'___,----' ___ `--.                     ,::::::::'   . . . . J ");
        ln("       J :-'   .       --'          --.`. ) \\                 _,:::::'     . . . . . .L ");
        ln("       ,' :   : .  ___----.__ --.___ `.`.\\  '               ,::::'      . . . . . . .J ");
        ln("      / : :  : :  ,--::,,   ,`.--.`.`-.`.)               _,::'       . ..::::. . . . L ");
        ln("      L : ':.::   L::'  ``:/   `. `.\\  `.\\            _,:::'      . ..:::'. . . . . / ");
        ln("     J  .:.':::   F::     J `.   `. \\   \\         ,::::'     . ..::' . .__,-' ..:J ");
        ln("     L,::::::::.  J::     F  ,\"\"\\  \\ LL   \\L     ,-:::'    . . .::' ....:'...  ..::L ");
        ln("  ,-,.''''''''':.  L:    J  J ):.`. `JF    '__,-::::.   . . . .....:;:-'.'    ..::/ ");
        ln(" / . ;;;;;;;''''::.);     \\ J/CD:\\,F  L:-.-:::::'. . . .  ..:;;;:--'.:''   . ..::/ ");
        ln(" L:. _     '''\\' (:'         L:;:JP    .::\\:::::. . . .:;;:-'   ,::''     . ..::/ ");
        ln(" |:.' _,       `._`----.______  \"'      .':L:::::::;;:-'       /:'       . ..::' ");
        ln(" J: .::|      .`. \"-------\"\"      ._,    .:|::;;;-'          ,:'      . . .::/ ");
        ln(" -L:_::J ,    \\`.`.                 (     :J-'             ,:'       . . .::' ");
        ln(" ::,-`.J J J L\\ `.`.   ,- .         ,'\\  .:L             /:      . . ..::/ ");
        ln("  ; ; ,J  L L \\``. `-;,' ,,oo        \"\"'   :J           ,:'      . . ..::' ");
        ln("  :; :  L J\\ \\``.``._/_ =dP                ':L         /\"\"\"\"-.  . . .::/ ");
        ln(" ':::..,J`.L \\`.\\`._J  =dQ                 .:F       ,'       `. ..:::' ");
        ln(" ':::    \\`\\``.`._ F- =dP. . . . . . . . ;:'       /           L.::/ ");
        ln(" ' ; :   `.\\\\_\\`.,-._  ::::::::::::::;:-'        ,'            J::/ ");
        ln("  ;:  `./   `.`.--`._ `-:;:--.;;;;;--'::\\       .--.            |\\/ ");
        ln(" : : __J         J::.`-----@'\\::.. . .'::\\    ,::'. \\           F L ");
        ln(" __::::\\         |:::: J      \\::.. . .'::\\  /:: .'.:L          , J ");
        ln(" J :::::L        F:::: |       L::.. . .'::\\/:: .  :.J          L-' ");
        ln("  L:::::J       J::::: F       J:::.. .  .::\\: .  .: .L         F ");
        ln("  |::::::L      |'':::J      ,-'\"\"\"`-. ..  . ..  .::. J        / ");
        ln("  J::'::.J      F: :::|    ,'         `. . .  ` .::. . L      / ");
        ln("   L: '::.L    J .  ::F   /             `.......:'. . .J     J ");
        ln("   |   :: |    F :  :J   J              J \\''''''. . . .\\    J ");
        ln("   J  ,.::J   J  .  :|   | |             \\ \\. . . . . . .`---.\\__ ");
        ln("    L,  :::L  F :. .:L   | J              L \\. . . . `-.: .      `--.__ ");
        ln("    |  .:::| /. ::.:J    |  L             J  \\. . .'. ':`-..           `-._ ");
        ln("    |   ::;J/: :::::F    |  |              \\  \\       '. . `. .         . dMb ");
        ln("    |  ,::;:L: ::::J     |  |               L  L        . . .`..         .`QJ ");
        ln("    |   ::;:| :::::F     J  J               J   L      . . . . \\:.      . . | ");
        ln("    |   :;::| ::::J       L  L               L  J     . . . . . \\:.. . . . .| ");
        ln("    F  ,';::| ::::F       J  J               J  F. . .,ooo.. . . L::. . . . F ");
        ln("   J  ,  ;::|: . J         L  \\               L/. . ..dM()b . . .J:: . . . J ");
        ln("   | ,  ;:::J . .F         J   \\         __...J: . . .`QMP'. . . J::. . ../ ");
        ln("   |    ;::::L ./           \\   L    _,-'   .::L: . . . . . . . .F:: . .:/ ");
        ln("   |    ;::::|./             \\  J  ,:::.     ::J:. . . . . . . :/::'. ::' ");
        ln("   |   ;:::::|/               L  \\(\\:::       ::L:. . . . . .::/::::::' ");
        ln("   F   ;::.::|                J   `\"L:::      ::J:::.....:::::'::::;'\\ ");
        ln("  J    ;:::::|                 \\    J:::.     .::L:::::::::,,._,,\"    L ");
        ln("  |   ;::.:::F                  \\    \\:::.     .:J`,:,,_,,\"'\"\"\"\" . ; .J ");
        ln("  L   ;::::.J                    L    L::       .:L\"\"\"\"'  .;. .;. ..; J ");
        ln(" J.   ;:.:::|                    J    J::.       :J. . ; . .;. .;.  ;.L ");
        ln(" L   ;::::::|                     \\    \\::.  . . .:L. . ; . ; . ; .;./ ");
        ln("  .  ;:.::.:F                      \\    L::.  . . :J . .;. ;/\\ ; ./\\( ");
        ln(" .  ;::::::J                        \\   J::   :.: .:\\ .;. ; \\/;/\\ \\F ");
        ln("  . ;.:::::|                         \\   \\::  ::.. .:\\;  ./\\/\\ \\ \\/ ");
        ln(" . ;::::.::|                          \\   \\:: .::.  .:\\ \\ \\   \\/  | ");
        ln("  ;:.::::::L                           L   L::. ::.. .:`.\\/       | ");
        ln(" ;:::::::;J                            |   J::   ::.  .::\\        J ");
        ln(" :.:::.::;|                            J    L::   ::.  . :`.      | ");
        ln(" :::::::;.|                             L   J::::.  '   . ::\\     F ");
        ln(" ::::::;. L                             J    \\::::.      . .:\\   J ");
        ln(" :::.::; J                            ,'      \\::::.      . .:\\  | ");
        ln(" :::::; .|                         _,'         `.:::::     . ::L F ");
        ln(" ::::; . L                       ,'    ,         \\::::.     .::JJ ");
        ln(" .:::;. J                      ,'    ,'J    __,   `.:::.     .::\\ ");
        ln(" :::;. .|                    ,'    ,'   L,-','____, \\:::..    .::\\ ");
        ln(" ::;. . L                  ,'    ,'       ,'|        `.::..    .::\\ ");
        ln(" ::; . J                 ,'             ,'  |          \\::..    .::\\ ");
        ln(" :; . .|                ;'--'M-K\"------.____`           `.::.    .::\\ ");
        ln(" ; . . L              ,'                .   `--._         \\::.    .::\\ ");
        ln(" ;. . J              /        ,          . . .:::`--.     /`.:.    .::\\ ");
        ln(" . . .L             /        /            . . .::::::`-.  L  \\. .   .::\\ ");
        ln("  . .J             J        J            . . . . .::::::`.J   \\. .   .::\\ ");
        ln(" . . L             L       .F             . . . . .::::::\\`    \\. .   .::\\ ");
        ln("  . J             J        J             . . . . . .::::::\\     \\. .   . .L ");
        ln(" . .L             F        F. .           . . . . . :::::::\\     \\:.  ..::J ");
        ln("  .J              F      . J . .         . . . . . .::::::::\\     ):  ::::J ");
        ln(" . L              L . . . .:F . .         . . . . . ::: . .::\\   /:  ::::.L ");
        ln("  /               J  . . . .J. . .       . . . . . .:: . . .::\\ /.  ::::: L ");
        ln(" /                 \\. . . . :\\. . . . . . . . . . .:: . . . .::J.  ::::::.L ");
        ln("                    L. . . .::\\. . . . . . . . . .:: . . . . .:L  ::::::: | ");
        ln("                    L ....:::::`.::...... . . . : .       . . :L. :::::::.| ");
        ln("                   /:'. '':::::::`.::::::. ..::. .         . . J :::::: . | ");
        ln("                  J::  . . .:::::::`.:::::::::.             . .,'::::::: .| ");
        ln("                  L:      . . .::::::\\:::::::. .             ,' .'/ ::.:: J ");
        ln("                 /:        . . .::::::\\:::::: . .          ,' .:'/ ::_ ::.J ");
        ln("                J::           . . :::::L:::::. . .       ,'.:''./ ./ / :: :L ");
        ln("                L:           . . .:::::J::::: . . .      '''  ./ ./ / :J :J ");
        ln("               J::          . . . ::::::\\::::: . . .         ,'.:' / :/L :L ");
        ln("               |::           . . .:::::J L::::. . . .      ,'.:'  / :/J :J ");
        ln("               L:           . . . :::::L J:::::. . . .    (_:'   / :/ L :L ");
        ln("              J::          . . . :::::J   \\:::::. . .           / :/ / :/ ");
        ln("              |::           . . .:::::L    \\:::: . . .        .'.:' J :/ ");
        ln("              |::          . . . ::::J      \\:::::. . .      I_:'   L:/ ");
        ln("              L:          . . . .::::L       \\:::: . . .           J JL ");
        ln("             J::           . . .::::J         `.::: . .            L_LJ ");
        ln("             |::          . . . ::::L           \\::::. .           . ::L ");
        ln("             |::           . . .:::J             `.:: . .           . :| ");
        ln("             |::          . . .::::L               \\:::.           . .:J  ");
    }

    private static void lady() {
        ln(null);
        ln("                         8888888888888");
        ln("                     888888888888888888888888");
        ln("                 8888:::8888888888888888888888888");
        ln("               8888::::::8888888888888888888888888888");
        ln("             88::::::::888:::8888888888888888888888888");
        ln("             88888888::::8:::::::::::88888888888888888888");
        ln("            888 8::888888::::::::::::::::::88888888888   888");
        ln("             88::::88888888::::m::::::::::88888888888    8");
        ln("           888888888888888888:M:::::::::::8888888888888");
        ln("          88888888888888888888::::::::::::M88888888888888");
        ln("          8888888888888888888888:::::::::M8888888888888888");
        ln("           8888888888888888888888:::::::M888888888888888888");
        ln("          8888888888888888::88888::::::M88888888888888888888");
        ln("        88888888888888888:::88888:::::M888888888888888   8888");
        ln("       88888888888888888:::88888::::M::;o*M*o;888888888    88");
        ln("      88888888888888888:::8888:::::M:::::::::::88888888    8");
        ln("     88888888888888888::::88::::::M:;:::::::::::888888888");
        ln("    8888888888888888888:::8::::::M::aAa::::::::M8888888888       8");
        ln("    88   8888888888::88::::8::::M:::::::::::::888888888888888 8888");
        ln("   88  88888888888:::8:::::::::M::::::::::;::88:88888888888888888");
        ln("   8  8888888888888:::::::::::M::\"@@@@@@@\"::::8w8888888888888888");
        ln("    88888888888:888::::::::::M:::::\"@a@\":::::M8i888888888888888");
        ln("   8888888888::::88:::::::::M88:::::::::::::M88z88888888888888888");
        ln("  8888888888:::::8:::::::::M88888:::::::::MM888!888888888888888888");
        ln("  888888888:::::8:::::::::M8888888MAmmmAMVMM888*88888888   88888888");
        ln("  888888 M:::::::::::::::M888888888:::::::MM88888888888888   8888888");
        ln("  8888   M::::::::::::::M88888888888::::::MM888888888888888    88888");
        ln("   888   M:::::::::::::M8888888888888M:::::mM888888888888888    8888");
        ln("    888  M::::::::::::M8888:888888888888::::m::Mm88888 888888   8888");
        ln("     88  M::::::::::::8888:88888888888888888::::::Mm8   88888   888");
        ln("     88  M::::::::::8888M::88888::888888888888:::::::Mm88888    88");
        ln("     8   MM::::::::8888M:::8888:::::888888888888::::::::Mm8     4");
        ln("         8M:::::::8888M:::::888:::::::88:::8888888::::::::Mm    2");
        ln("        88MM:::::8888M:::::::88::::::::8:::::888888:::M:::::M");
        ln("       8888M:::::888MM::::::::8:::::::::::M::::8888::::M::::M");
        ln("      88888M:::::88:M::::::::::8:::::::::::M:::8888::::::M::M");
        ln("     88 888MM:::888:M:::::::::::::::::::::::M:8888:::::::::M:");
        ln("     8 88888M:::88::M:::::::::::::::::::::::MM:88::::::::::::M");
        ln("       88888M:::88::M::::::::::*88*::::::::::M:88::::::::::::::M");
        ln("      888888M:::88::M:::::::::88@@88:::::::::M::88::::::::::::::M");
        ln("      888888MM::88::MM::::::::88@@88:::::::::M:::8::::::::::::::*8");
        ln("      88888  M:::8::MM:::::::::*88*::::::::::M:::::::::::::::::88@@");
        ln("      8888   MM::::::MM:::::::::::::::::::::MM:::::::::::::::::88@@");
        ln("       888    M:::::::MM:::::::::::::::::::MM::M::::::::::::::::*8");
        ln("       888    MM:::::::MMM::::::::::::::::MM:::MM:::::::::::::::M");
        ln("        88     M::::::::MMMM:::::::::::MMMM:::::MM::::::::::::MM");
        ln("         88    MM:::::::::MMMMMMMMMMMMMMM::::::::MMM::::::::MMM");
        ln("          88    MM::::::::::::MMMMMMM::::::::::::::MMMMMMMMMM");
        ln("           88   8MM::::::::::::::::::::::::::::::::::MMMMMM");
        ln("            8   88MM::::::::::::::::::::::M:::M::::::::MM");
        ln("                888MM::::::::::::::::::MM::::::MM::::::MM");
        ln("               88888MM:::::::::::::::MMM:::::::mM:::::MM");
        ln("               888888MM:::::::::::::MMM:::::::::MMM:::M");
        ln("              88888888MM:::::::::::MMM:::::::::::MM:::M");
        ln("             88 8888888M:::::::::MMM::::::::::::::M:::M");
        ln("             8  888888 M:::::::MM:::::::::::::::::M:::M:");
        ln("                888888 M::::::M:::::::::::::::::::M:::MM");
        ln("               888888  M:::::M::::::::::::::::::::::::M:M");
        ln("               888888  M:::::M:::::::::@::::::::::::::M::M");
        ln("               88888   M::::::::::::::@@:::::::::::::::M::M");
        ln("              88888   M::::::::::::::@@@::::::::::::::::M::M");
        ln("             88888   M:::::::::::::::@@::::::::::::::::::M::M");
        ln("            88888   M:::::m::::::::::@::::::::::Mm:::::::M:::M");
        ln("            8888   M:::::M:::::::::::::::::::::::MM:::::::M:::M");
        ln("           8888   M:::::M:::::::::::::::::::::::MMM::::::::M:::M");
        ln("          888    M:::::Mm::::::::::::::::::::::MMM:::::::::M::::M");
        ln("        8888    MM::::Mm:::::::::::::::::::::MMMM:::::::::m::m:::M");
        ln("       888      M:::::M::::::::::::::::::::MMM::::::::::::M::mm:::M");
        ln("    8888       MM:::::::::::::::::::::::::MM:::::::::::::mM::MM:::M:");
        ln("               M:::::::::::::::::::::::::M:::::::::::::::mM::MM:::Mm");
        ln("              MM::::::m:::::::::::::::::::::::::::::::::::M::MM:::MM");
        ln("              M::::::::M:::::::::::::::::::::::::::::::::::M::M:::MM");
        ln("             MM:::::::::M:::::::::::::M:::::::::::::::::::::M:M:::MM");
        ln("             M:::::::::::M88:::::::::M:::::::::::::::::::::::MM::MMM");
        ln("             M::::::::::::8888888888M::::::::::::::::::::::::MM::MM");
        ln("             M:::::::::::::88888888M:::::::::::::::::::::::::M::MM");
        ln("             M::::::::::::::888888M:::::::::::::::::::::::::M::MM");
        ln("             M:::::::::::::::88888M:::::::::::::::::::::::::M:MM");
        ln("             M:::::::::::::::::88M::::::::::::::::::::::::::MMM");
        ln("             M:::::::::::::::::::M::::::::::::::::::::::::::MMM");
        ln("             MM:::::::::::::::::M::::::::::::::::::::::::::MMM");
        ln("              M:::::::::::::::::M::::::::::::::::::::::::::MMM");
        ln("              MM:::::::::::::::M::::::::::::::::::::::::::MMM");
        ln("               M:::::::::::::::M:::::::::::::::::::::::::MMM");
        ln("               MM:::::::::::::M:::::::::::::::::::::::::MMM");
        ln("                M:::::::::::::M::::::::::::::::::::::::MMM");
        ln("                MM:::::::::::M::::::::::::::::::::::::MMM");
        ln("                 M:::::::::::M:::::::::::::::::::::::MMM");
        ln("                 MM:::::::::M:::::::::::::::::::::::MMM");
        ln("                  M:::::::::M::::::::::::::::::::::MMM");
        ln("                  MM:::::::M::::::::::::::::::::::MMM");
        ln("                   MM::::::M:::::::::::::::::::::MMM");
        ln("                   MM:::::M:::::::::::::::::::::MMM");
        ln("                    MM::::M::::::::::::::::::::MMM");
        ln("                    MM:::M::::::::::::::::::::MMM");
        ln("                     MM::M:::::::::::::::::::MMM");
        ln("                     MM:M:::::::::::::::::::MMM");
        ln("                      MMM::::::::::::::::::MMM");
        ln("                      MM::::::::::::::::::MMM");
        ln("                       M:::::::::::::::::MMM");
        ln("                      MM::::::::::::::::MMM");
        ln("                      MM:::::::::::::::MMM");
        ln("                      MM::::M:::::::::MMM:");
        ln("                      mMM::::MM:::::::MMMM");
        ln("                       MMM:::::::::::MMM:M");
        ln("                       mMM:::M:::::::M:M:M");
        ln("                        MM::MMMM:::::::M:M");
        ln("                        MM::MMM::::::::M:M");
        ln("                        mMM::MM::::::::M:M");
        ln("                         MM::MM:::::::::M:M");
        ln("                         MM::MM::::::::::M:m");
        ln("                         MM:::M:::::::::::MM");
        ln("                         MMM:::::::::::::::M:");
        ln("                         MMM:::::::::::::::M:");
        ln("                         MMM::::::::::::::::M");
        ln("                         MMM::::::::::::::::M");
        ln("                         MMM::::::::::::::::Mm");
        ln("                          MM::::::::::::::::MM");
        ln("                          MMM:::::::::::::::MM");
        ln("                          MMM:::::::::::::::MM");
        ln("                          MMM:::::::::::::::MM");
        ln("                          MMM:::::::::::::::MM");
        ln("                           MM::::::::::::::MMM");
        ln("                           MMM:::::::::::::MM");
        ln("                           MMM:::::::::::::MM");
        ln("                           MMM::::::::::::MM");
        ln("                            MM::::::::::::MM");
        ln("                            MM::::::::::::MM");
        ln("                            MM:::::::::::MM");
        ln("                            MMM::::::::::MM");
        ln("                            MMM::::::::::MM");
        ln("                             MM:::::::::MM");
        ln("                             MMM::::::::MM");
        ln("                             MMM::::::::MM");
        ln("                              MM::::::::MM");
        ln("                              MMM::::::MM");
        ln("                              MMM::::::MM");
        ln("                               MM::::::MM");
        ln("                               MM::::::MM");
        ln("                                MM:::::MM");
        ln("                                MM:::::MM:");
        ln("                                MM:::::M:M");
        ln("                                MM:::::M:M");
        ln("                                :M::::::M:");
        ln("                               M:M:::::::M");
        ln("                              M:::M::::::M");
        ln("                             M::::M::::::M");
        ln("                            M:::::M:::::::M");
        ln("                           M::::::MM:::::::M");
        ln("                           M:::::::M::::::::M");
        ln("                           M;:;::::M:::::::::M");
        ln("                           M:m:;:::M::::::::::M");
        ln("                           MM:m:m::M::::::::;:M");
        ln("                            MM:m::MM:::::::;:;M");
        ln("                             MM::MMM::::::;:m:M");
        ln("                              MMMM MM::::m:m:MM");
        ln("                                    MM::::m:MM");
        ln("                                     MM::::MM");
        ln("                                      MM::MM");
        ln("                                        M:M");
    }


    /**
     * Эмблемка.
     */
    public static void printdef() {
        ln(null);
        ln("############################################################");
        ln("############################################################");
        ln("###########################      ###########################");
        ln("#########################          #########################");
        ln("#######################              #######################");
        ln("#####################                  @####################");
        ln("###################                      ###################");
        ln("#################         #A#A#            #################");
        ln("###############          @V@@@V@             ###############");
        ln("#############            @@@D@@@               @############");
        ln("###########               @%%%@                  ###########");
        ln("#########                      #@@##@@#            #########");
        ln("#######        #@@@##@@@@# #@@#@#%  #@@#             @######");
        ln("#####            #@@@##@@@@# #@@#    #@#               @####");
        ln("####                        #@@@@#                      ####");
        ln("####                        #@@@@#                      ####");
        ln("######                      #@@@@@#                   @#####");
        ln("########                  %@@@# #@@#                @#######");
        ln("##########               @@@#    #@@#             @#########");
        ln("############             @@#      @@@@@         @###########");
        ln("##############          #@@=        #@@%      @#############");
        ln("################        #@#                 @###############");
        ln("##################                        @#################");
        ln("####################                    @###################");
        ln("######################                @#####################");
        ln("########################            @#######################");
        ln("##########################        ##########################");
        ln("############################    ############################");
        ln("############################################################");
        ln("############################################################");
    }

    private static void printver() {
        ln(null);
        ln("       $  $        ####     #       ####      $  $  ");
        ln("         $  $     ##   #  ###      ##   #   $  $    ");
        ln("       $$$$$$$        #    ##         #    $$$$$$$  ");
        ln("         $  $       ##     ##       ##      $  $    ");
        ln("       $  $       ######  ####  #  ######     $  $  java16");
    }
}
